/**
 * @file bull_hal_drv_uart.h
 * @brief 
 * @author yejing (yejh@gongniu.cn)
 * @version 1.0
 * @date 2024-05-14
 * 
 * Copyright 2024-2025 GongNiu Inc. All Rights Reserved.
 * 
 */


#ifndef __BULL_HAL_DRV_UART_H__
#define __BULL_HAL_DRV_UART_H__



#ifdef __cplusplus
extern "C" {
#endif

/**
 * @brief 串口初始化
 * 
 * @param port 串口号
 * @param baud 波特率
 * @return int 停止位
 */
int bull_hal_drv_uart_init( int port, int baud );


/**
 * @brief 串口发送数据
 * 
 * @param port 端口号
 * @param buffer 数据
 * @param length 数据长度
 * @return int 返回实际发送的长度
 */
int bull_hal_drv_uart_write( int port, uint8_t* buffer, uint32_t length );


/**
 * @brief 读取数据
 * 
 * @param port 端口号
 * @param buffer 数据
 * @param length 数据长度
 * @param ms 等待数据超时时间
 * @return int 
 */
int bull_hal_drv_uart_read( int port, uint8_t* buffer, uint32_t length, uint32_t ms );

/**
 * @brief 用于释放串口
 * 
 * @param[in]  port     串口句柄
 */
int bull_hal_drv_uart_deinit( int port );


/**
 * @brief 释放串口的信号量
 * 
 * @param port 
 * @return int 
 */
int bull_hal_drv_uart_block_release( int port );



#ifdef __cplusplus
}
#endif

#endif
